Введение в Postgre
PostgreSQL - крутая СУБД, потому что..
-
Она не принадлежит какой-либо компании, как например Oracle или mysql и распространяется по BSD-лицензии
-
Имеет поддержку продвинутых фишек - PL/pgSQL, триггеров. Теоретически это очень полезно при создании очень масштабной системы.
-
Транзакции по принципам ACID придают скорости - несколько запросов в одной транзакции выполняются как одна атомарная операция. А мультиверсионность помогает избежать блокировки таблиц.
-
Объектность. Таблица выступает фактически в виде класса, а ряды - в виде объектов, так же как классы могут наследоваться, так и таблицы могут наследоваться.
-
Система привилегий операций с таблицами, схожа с системой по принципу с Oracle.
-
Репликации, т.е. использование нескольких серверов даёт масштабируемость.
Переход на PostgreSQL как правило связан с обработкой больших объемов данных - когда число рядов переваливает миллион, то mysql начинает испытывать трудности, а Natural Join нескольких таких таблиц может привести вообще к падению сервера. Да и тесты на параллельность поддерживают Postgre. Энтузиастам может быть интересна же не столь масштабируемость, сколько объектность, позволяющая большую свободу, или если хотите - сложность, по сравнению с mysql.
При переходе из mysql, следует отметить различия, которые естественно следует предусмотреть:
- Различные типы данных. Нет datetime, зато есть возможность создать тучу своих типов.
- Отсутсвие autoincrement. Такая функция заменена наличием sequence, и в упрощённом виде может использоваться так:
CREATE TABLE mynewtable ( id SERIAL }
- pgAdmin III очень удобная консольная программа, а в качестве замены phpMyAdmin есть phpPgAdmin
- Аналогом DATE_FORMAT является to_char
- Заглавные буквы в названиях таблиц и полей по умолчанию переводятся в нижний регистр, это можно обойти используя двойные кавычки
- Форматом для LIMIT конструкции стал также поддерживаемый с mysql 4
LIMIT # OFFSET #
- Просмотр запущенных процессов реализуется аналогом
--show processlisе``SELECT * from pg_stat_activity ;
Читайте также:
- Субъективная разница Postgre и MySQL
- Замена SQL_CALC_FOUND_ROWS из MySQL в Postgre